<?php

/**
 * @category   Zend
 * @package    Zend_Tokenizer
 * @copyright  Salomon BRYS
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Tokenizer_Interface
{
	/**
	 * Get the buffered data not tokenized yet.
	 * Used to transfer data when tokenizer is changing on the fly.
	 *
	 * @return string
	 */
	public function getRawData();

	/**
	 * return wether there's at least one token ready.
	 *
	 * @return bool
	 */
	public function hasToken();

	/**
	 * Return the next token.
	 *
	 * @return mixed
	 */
	public function getToken();

	/**
	 * Return wether it is the of the stream.
	 *
	 * @return bool
	 */
	public function isEndOfStream();

	/**
	 * Return wether the tokenizer produces string tokens
	 *
	 * @return bool
	 */
	public function isStringToken();

	/**
	 * Get the 'first' tokenizer. The producer.
	 * If a decorator, returns the decorated tokenizer.
	 * If a producer, returns itself.
	 *
	 * @return Zend_Tokenizer_Interface
	 */
	public function getProducer();
}
